home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 June
/
EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso
/
earcd
/
utilsys
/
rss14gmd.lha
/
RSys_1.4gmd
/
C
/
GfxCtrl.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-04
|
3KB
|
120 lines
/*
***************************************************************************
*
* Datei:
* RSysGfxCtrl.c
*
* Inhalt:
*
* --- Globale Routinen ---
*
* UWORD ComputeX ( UWORD value );
* UWORD ComputeY ( UWORD value );
* void ComputeFont ( SCREEN *wndscr , UWORD width , UWORD height );
* WORD compute ( UWORD offset , UWORD xy , int measure );
*
* --- Lokale Routinen ---
*
*
* Bemerkungen:
* Graphics-Routinen für die Unterstützung fontsensitiver
* Benutzeroberflächen.
*
* Erstellungsdatum:
* 25-Jun-93 Rolf Böhme
*
* Änderungen:
* 25-Jun-93 Rolf Böhme Erstellung
*
***************************************************************************
*/
#include "RSys.h"
#include "protos.h"
/*
* compute() berechnet die fontsensitiven Abmessungen von
* Intuition-Objekten
*/
WORD
compute (UWORD offset, UWORD xy, int measure)
{
return (WORD) (offset + ((xy * (measure * FRAC)) / FULL)); /* GMD */
}
/*
* computeX() berechnet einen Wert bezüglich der
* Fontbreite
*/
UWORD
ComputeX (UWORD value)
{
return ((UWORD) (((FontX * value) + 4) / 8));
}
/*
* computeY() berechnet einen Wert bezüglich der
* Fonthöhe
*/
UWORD
ComputeY (UWORD value)
{
return ((UWORD) (((FontY * value) + 4) / 8));
}
/*
* ComputeFont() berechnet die korrekte Breite und Höhe eines
* Fonts. Passen Höhe und Breite eines Abschnittes, verknüpft
* mit den Fontdaten nicht auf den angegebenen Screen, wird der
* System-Standard-Font topaz in der Größe 8 verwendet
*/
void
ComputeFont (SCREEN * wndscr, UWORD width, UWORD height)
{
DPOS;
if (Flags.sysfont)
{
Font = &Topaz80;
FontX = 8;
FontY = 8;
Font->ta_YSize = 8;
}
else
{
Forbid ();
Font = &TAttr;
Font->ta_Name = (STRPTR) GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
FontX = GfxBase->DefaultFont->tf_XSize;
Permit ();
}
OffX = wndscr->WBorLeft;
OffY = wndscr->RastPort.TxHeight + wndscr->WBorTop + 1;
if (width && height)
{
if ((ComputeX (width) + OffX + wndscr->WBorRight) > wndscr->Width)
goto UseTopaz;
if ((ComputeY (height) + OffY + wndscr->WBorBottom) > wndscr->Height)
goto UseTopaz;
}
return;
UseTopaz:
ErrorHandle ((char *) Font->ta_Name, FONT_ERR, SIZE_FAIL, NO_KILL);
Font = &Topaz80;
FontX = 8;
FontY = 8;
Font->ta_YSize = 8;
Flags.sysfont = 1;
return;
}